// pages/rank/rank.js
Page({
  data: {
    rankList: [],
    loading: false,
    error: null,
    // 修改默认头像路径为本地路径
    defaultAvatarUrl: '/static/images/default_avatar.png', // 默认头像，当加载失败时使用
  },

  onLoad(options) {
    this.loadRankList();
  },

  onShow() {
    // 每次显示页面时刷新排行榜
    this.loadRankList();
  },

  // 处理名字，去掉括号及其内容
  processVillagerName(name) {
    if (!name) return '';
    // 使用正则表达式去掉括号及其内容，包括中文括号和英文括号
    const processedName = name.replace(/[（(].*?[）)]/g, '').trim();
    console.log(`处理名字: "${name}" -> "${processedName}"`);
    return processedName;
  },

  // 构造本地图片路径
  buildCloudImagePath(name) {
    // 直接使用原始名称构建本地路径，包括括号内容
    return `cloud://cloud1-1gpyv55g5212b580.636c-cloud1-1gpyv55g5212b580-1363170652/image/${name}.png`;
  },

  // 加载排行榜数据
  async loadRankList() {
    this.setData({ loading: true, error: null });
    
    try {
      console.log('开始获取排行榜...');
      const { result } = await wx.cloud.callFunction({
        name: 'getRankList',
        data: {
          limit: 50 // 获取前50名
        }
      });
      
      console.log('排行榜响应:', result);
      
      if (result && result.success) {
        console.log('排行榜数据:', result.data);
        
        // 处理排行榜数据，去掉括号并添加云存储图片路径
        const processedData = (result.data || []).map(item => ({
          ...item,
          displayName: this.processVillagerName(item.villagerName),
          avatarUrl: this.buildCloudImagePath(item.villagerName)
        }));
        
        this.setData({
          rankList: processedData,
          loading: false
        });
      } else {
        console.error('排行榜失败:', result);
        this.setData({
          error: result?.message || '获取排行榜失败',
          loading: false
        });
      }
    } catch (err) {
      console.error('获取排行榜失败:', err);
      this.setData({
        error: '网络错误，请稍后重试',
        loading: false
      });
    }
  },

  // 处理图片加载错误
  onImageError(e) {
    const index = e.currentTarget.dataset.index;
    const defaultUrl = this.data.defaultAvatarUrl;
    
    // 使用setData的特殊语法更新数组中特定项的属性
    const key = `rankList[${index}].avatarUrl`;
    this.setData({
      [key]: defaultUrl
    });
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.loadRankList().finally(() => {
      wx.stopPullDownRefresh();
    });
  },

  // 点击排行榜项
  onRankItemTap(e) {
    const { villagerId, villagerName } = e.currentTarget.dataset;
    if (villagerId && villagerName) {
      wx.navigateTo({
        url: `/pages/villager/villager?id=${villagerName}`
      });
    }
  },

  // 分享
  onShareAppMessage() {
    return {
      title: '小动物投票排行榜',
      path: '/pages/rank/rank'
    };
  }
});